package com.heima.tlias.controller;

import com.heima.tlias.controller.request.QueryEmpRequest;
import com.heima.tlias.pojo.Emp;
import com.heima.tlias.service.EmpService;
import com.heima.tlias.utils.PageBean;
import com.heima.tlias.utils.Result;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping(path = "/emps")
@Slf4j
@RequiredArgsConstructor
public class EmpController {

    private final EmpService empService;

    /**
     * GET请求 如果参数比较多 , 可以直接通过实体类接收参数 (保证实体类属性名称和参数名称一致即可)
     * 也不需要加 @RequestBody
     *
     * @param request 请求参数
     * @return
     */
    @GetMapping
    public Result<PageBean> queryList(QueryEmpRequest request) {
        log.info("接收到查询员工列表请求 , 请求参数:{}", request);
        PageBean<Emp> pageBean = empService.queryEmpByCondition(request);
        return Result.success(pageBean);
    }

    /**
     * 保存员工信息
     *
     * @param emp
     * @return
     */
    @PostMapping
    public Result<String> insert(@RequestBody Emp emp) throws IOException {
        empService.insert(emp);
        return Result.success("保存成功");
    }

    /**
     * 根据id批量删除员工信息
     *
     * @param ids
     * @return
     */
    @DeleteMapping
    public Result<String> deleteByIds(Integer[] ids) {
        empService.deleteByIds(ids);
        return Result.success("删除成功");
    }

    /**
     * 根据id查询员工详情
     *
     * @param id
     * @return
     */
    @GetMapping(path = "/{id}")
    public Result<Emp> queryById(@PathVariable("id") Integer id) {
        Emp emp = empService.queryById(id);
        return Result.success(emp);
    }

    /**
     * 更新员工信息
     *
     * @param emp
     * @return
     */
    @PutMapping
    public Result<String> update(@RequestBody Emp emp) {
        if (emp.getId()==null){
            return Result.error("缺少参数");
        }
        empService.update(emp);
        return Result.success("操作成功");
    }

    /**
     * 查询所有员工
     *
     * @return
     */
    @GetMapping(path = "/list")
    public Result<List<Emp>> queryAll() {
        List<Emp> empList = empService.queryAll();
        return Result.success(empList);
    }

}
